//PC网页容器内嵌二维码 扫码登录
// 注： 此种方式网页中需引入微信相关js库<script src="http://res.wx.qq.com/connect/zh_CN/htmledition/js/wxLogin.js"></script>
var sweep_login= function (elm_id, appId, redirect_uri_handel, href) {
  /*
  * elm_id   装载二维码的容器id  必填
  * appId  公众号appid  必填
  * redirect_uri_handel   回调函数方法名  选填(默认：123456)
  * href   二维码自定义样式css地址  选填(默认：123456)
  */
  return new WxLogin ({
    id: elm_id,
    appid: appId,
    scope: "snsapi_login",
    redirect_uri: encodeURIComponent(redirect_uri_handel || function(){ }) ,
    state: "",
    style: "black",
    href: href || ""
  });
};
//PC网页跳转 扫码登录
var sweep_login_href= function(APPID, REDIRECT_URI, STATE){
  /*
  * APPID  公众号appid  必填
  * REDIRECT_URI   授权以后的回调地址  必填
  * STATE   授权以后的回调地址所带的自定义标识  选填(默认：123456)
  */
  location.replace("https://open.weixin.qq.com/connect/qrconnect?"+
    "appid="+ APPID+
    "&redirect_uri="+ REDIRECT_URI+
    "&response_type=code&scope=SCOPE"+
    "&state="+ (STATE || "123456")+
    "#wechat_redirect");
};




//微信端公众号授权登录
var auth_login= {
  /*
  * APPID  公众号appid  必填
  * REDIRECT_URI   授权以后的回调地址  必填
  * STATE   授权以后的回调地址所带的自定义标识  选填(默认：123456)
  */
  get_code: function(APPID, REDIRECT_URI, STATE){
    location.replace("https://open.weixin.qq.com/connect/oauth2/authorize?"+
      "appid="+ APPID+
      "&redirect_uri="+ encodeURIComponent(REDIRECT_URI)+
      "&response_type=code&scope=snsapi_userinfo&state="+ (STATE || "123456")+ "#wechat_redirect")
  },
  get_access_token: function(APPID, SECRET, CODE){
    /*
    * APPID  公众号appid  必填
    * SECRET   公众号SECRET  必填
    * CODE   授权登录获取到的code  必填
    */
    var _this= this;
    window.$ = window.$ || {};
    $.ajax({
      url: "https://api.weixin.qq.com/sns/oauth2/access_token?appid="+ APPID+
        "&secret="+ SECRET+ "&code="+ CODE+ "&grant_type=authorization_code",
      type: "get",
      dataType: "json",
      success: function(res){
        _this.rget_weichat_info(res.access_token, res.openid);
      }
    })
  },
  get_weichat_info: function(ACCESS_TOKEN, OPENID){
    /*
    * ACCESS_TOKEN   根据CODE,SECRET,APPID获取到的获取信息密钥ACCESS_TOKEN  必填
    * OPENID   根据CODE,SECRET,APPID获取到的获取信息的唯一标识OPENID  必填
    */
    window.$ = window.$ || {};
    $.ajax({
      url: "https://api.weixin.qq.com/sns/userinfo?access_token="+ ACCESS_TOKEN+ "&openid="+ OPENID,
      type: "get",
      dataType: "json",
      success: function(res){
        console.log("微信用户信息 ::: ", res);
      }
    })
  }
};



//微信公众号H5支付
var pay_h5= function(json, successFun, failFun){
  /*
  * json: 前端点击购买按钮，后台下单然后返回的支付参数，包括字段有：
  *   - appId      公众号appId
  *   - timeStamp  时间戳，自1970年以来的秒数
  *   - nonceStr   随机串
  *   - package    订单详情扩展字符串
  *   - signType   微信签名方式
  *   - paySign    微信签名
  * succeccFun: 支付成功回调函数
  * failFun:    支付失败回调函数
  */
  function onBridgeReady(json, successFun, failFun){
    WeixinJSBridge.invoke('getBrandWCPayRequest', {
        "appId":      json.appId,
        "timeStamp":  json.timeStamp,
        "nonceStr":   json.nonceStr,
        "package":    json.package,
        "signType":   json.signType,
        "paySign":    json.paySign,
      },
      function(res){
        if(res.err_msg == "get_brand_wcpay_request:ok" ){
          // 使用以上方式判断前端返回,微信团队郑重提示：
          //res.err_msg将在用户支付成功后返回ok，但并不保证它绝对可靠。建议以后端接口为准。
          (typeof successFun).toLowerCase()== 'function' && successFun();
        }else{
          (typeof failFun).toLowerCase()== 'function' && failFun();
        }
      });
  }
  //自动检测事件是否能正常调起微信H5支付
  if (typeof WeixinJSBridge == "undefined"){
    if( document.addEventListener ){
      document.addEventListener('WeixinJSBridgeReady', onBridgeReady, false);
    }else if (document.attachEvent){
      document.attachEvent('WeixinJSBridgeReady', onBridgeReady);
      document.attachEvent('onWeixinJSBridgeReady', onBridgeReady);
    }
  }else{
    onBridgeReady(json, successFun, failFun);
  }

};
//PC端实行扫码支付，用户点击立即支付向后台请求，后台生成二维码前端展示，用户扫码支付，此过程前端接入比较少，故不再累赘。


export default {
  pay_h5,
  auth_login,
  sweep_login_href,
  sweep_login
}

